import React from 'react'

// 先执行子类中的方法，然后再执行父类中的方法
const withButton = Cmp => {
  // 高阶组件中通过继承增强包裹的组件的能力
  return class extends Cmp {
    render() {
      let { text = '默认按钮' } = this.props

      // 得到父组件中对应的render方法  克隆一个元素对象，进行数据修改
      let element = React.cloneElement(super.render(), null, text)

      return (
        <div>
          <h3>我是高阶组件</h3>
          {element}
        </div>
      )
    }
  }
}

export default withButton
